home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2010 April
/
PCWorld0410.iso
/
pluginy Firefox
/
2410
/
2410.xpi
/
chrome
/
content
/
foxmarks-uitools.js
< prev
next >
Wrap
Text File
|
2010-01-28
|
13KB
|
388 lines
/*
Copyright 2009 Foxmarks Inc.
foxmarks-uitools.js: Various and sundry UI functions.
*/
var Xmarks;
if(Xmarks === undefined){
Xmarks = {};
}
var Cc = Components.classes;
var Ci = Components.interfaces;
var CCon = Components.Constructor;
(function() {
var xm = Xmarks;
xm.OpenWindowByType = function(inType, uri, features, args) {
var wm = Cc['@mozilla.org/appshell/window-mediator;1'].
getService(Ci.nsIWindowMediator);
var topWindow = wm.getMostRecentWindow(inType);
if (topWindow) {
topWindow.focus();
} else {
topWindow = wm.getMostRecentWindow(null);
var win = topWindow.openDialog(uri, "_blank", features || "chrome",
args);
}
};
xm.OpenInNewTabAuth = function(url, focus, auth){
var wm = Cc['@mozilla.org/appshell/window-mediator;1'].
getService(Ci.nsIWindowMediator);
var topWindow = wm.getMostRecentWindow('navigator:browser');
if (topWindow) {
var content = topWindow.document.getElementById('content');
if(auth !== undefined){
var pd = Cc["@mozilla.org/network/mime-input-stream;1"].
createInstance(Ci.nsIMIMEInputStream);
pd.addHeader("Authorization", "XMAuth "+ auth);
pd.addHeader("X-Xmarks-Auth", auth);
content.selectedTab =
content.addTab(url, null,null , pd);
} else {
content.selectedTab =
content.addTab(url);
}
if (focus) {
topWindow.focus();
}
}
};
xm.OpenInNewTab = function(url, focus, postData) {
var wm = Cc['@mozilla.org/appshell/window-mediator;1'].
getService(Ci.nsIWindowMediator);
var topWindow = wm.getMostRecentWindow('navigator:browser');
if (topWindow) {
var content = topWindow.document.getElementById('content');
if(postData !== undefined){
var stringStream = Cc["@mozilla.org/io/string-input-stream;1"].
createInstance(Ci.nsIStringInputStream);
var txt = postData.toJSONString();
if ("data" in stringStream) // Gecko 1.9 or newer
stringStream.data = txt;
else // 1.8 or older
stringStream.setData(txt, txt.length);
var pd = Cc["@mozilla.org/network/mime-input-stream;1"].
createInstance(Ci.nsIMIMEInputStream);
pd.addHeader("Content-Type", "application/json");
pd.addContentLength = true;
pd.setData(stringStream);
content.selectedTab =
content.addTab(url, null,null , pd);
} else {
content.selectedTab =
content.addTab(url);
}
if (focus) {
topWindow.focus();
}
}
};
xm.OpenInNewWindow = function(url) {
openDialog("chrome://browser/content/browser.xul", "_blank",
"chrome,all,dialog=no", url);
};
xm.OpenFoxmarksSettingsDialog = function(pane) {
xm.OpenWindowByType("foxmarks:settings",
"chrome://foxmarks/content/foxmarks-dialog.xul",
"chrome,toolbar,centerscreen",
[pane || "foxmarks-mainpane"]);
};
xm.MyFoxmarks = function() {
if(xm.gSettings.securityLevel == 1){
xm.OpenInNewTab("https://my.xmarks.com/", true);
} else {
xm.OpenInNewTab("http://my.xmarks.com/", true);
}
};
xm.OpenWizard = function(manual, skipAuth) {
if (skipAuth) {
xm.OpenWindowByType("foxmarks:setup",
"chrome://foxmarks/content/foxmarks-setup.xul",
"chrome,centerscreen,dialog=no", manual);
} else {
xm.OpenWindowByType("foxmarks:login",
"chrome://foxmarks/content/foxmarks-login.xul",
"chrome,centerscreen,dialog=no", manual);
}
};
xm.OnWizardCancel = function() {
var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
.getService(Components.interfaces.nsIPromptService);
var checkResult = {};
checkResult.value = xm.gSettings.wizardSuppress;
var sb = xm.Bundle();
var ret = ps.confirmCheck(window, sb.GetStringFromName("title.cancelsetup"),
sb.GetStringFromName("msg.cancelsetup"),
sb.GetStringFromName("msg.nowizard"),
checkResult);
xm.gSettings.wizardSuppress = checkResult.value;
xm.gSettings.majorVersion = 3;
return ret;
};
xm.Synch = function() {
xm.PerformAction("synch");
};
xm.PerformAction = function(action, arg) {
var retval = { helpurl: null };
try {
var win = window.openDialog(
"chrome://foxmarks/content/foxmarks-progress.xul", "_blank",
"chrome,dialog,modal,centerscreen", action, retval, arg);
if (retval.helpurl) {
xm.OpenInNewWindow(retval.helpurl);
}
} catch (e) {
// pass through
}
return retval.status;
};
var XmarksDataServiceObserver = {
os: Cc["@mozilla.org/observer-service;1"].
getService(Ci.nsIObserverService),
observe: function(subject, topic, data) {
var result = eval("(" + data + ")");
this.os.removeObserver(this, "foxmarks-dataservice");
if (this.spinner) {
this.spinner.hidden = true;
}
if (this.callback) {
var callback = this.callback;
this.callback = null;
callback(result);
}
},
start: function(text, spinner, callback) {
this.os.addObserver(this,
"foxmarks-dataservice", false);
this.text = text;
this.spinner = spinner;
this.callback = callback;
if (this.spinner) {
this.spinner.hidden = false;
}
}
};
var XmarksServiceObserver = {
os: Cc["@mozilla.org/observer-service;1"].
getService(Ci.nsIObserverService),
observe: function(subject, topic, data) {
var result = eval("(" + data + ")");
if (this.text) {
this.text.value = result.msg;
}
if (result.status != 1 && result.status != 3) {
this.os.removeObserver(this, "foxmarks-service");
if (this.spinner) {
this.spinner.hidden = true;
}
if (this.callback) {
var callback = this.callback;
this.callback = null;
callback(result);
}
}
},
start: function(text, spinner, callback) {
this.os.addObserver(XmarksServiceObserver, "foxmarks-service", false);
this.text = text;
this.spinner = spinner;
this.callback = callback;
if (this.spinner) {
this.spinner.hidden = false;
}
}
}
xm.TurboTagsCancel = function() {
var fms = Cc["@foxcloud.com/extensions/foxmarks;1"].
getService(Ci.nsIFoxmarksService);
fms.datacancel();
};
xm.FetchTurboTags = function(url, text, spinner, callback) {
var fms = Cc["@foxcloud.com/extensions/foxmarks;1"].
getService(Ci.nsIFoxmarksService);
XmarksDataServiceObserver.start(text, spinner, callback);
if (!fms.getTurboTags(url)) {
callback({status: 2, msg: "Whoops! We're busy!" });
}
return true;
};
xm.UpdateReview = function(url, url_id, rating, review, callback) {
var fms = Cc["@foxcloud.com/extensions/foxmarks;1"].
getService(Ci.nsIFoxmarksService);
if (!fms.updateReview(url, url_id, rating, review)) {
callback({status: 2, msg: "Whoops! We're busy!" });
}
return true;
};
xm.SimilarSitesCancel = function() {
var fms = Cc["@foxcloud.com/extensions/foxmarks;1"].
getService(Ci.nsIFoxmarksService);
fms.datacancel();
};
xm.FetchSimilarSites = function(url, text, spinner, callback) {
var fms = Cc["@foxcloud.com/extensions/foxmarks;1"].
getService(Ci.nsIFoxmarksService);
XmarksDataServiceObserver.start(text, spinner, callback);
if (!fms.getSimilarSites(url)) {
callback({status: 2, msg: "Whoops! We're busy!" });
}
return true;
};
xm.FetchProfileNames = function(text, spinner, menuPopup, callback) {
var fms = Cc["@foxcloud.com/extensions/foxmarks;1"].
getService(Ci.nsIFoxmarksService);
XmarksServiceObserver.start(text, spinner, FetchProfileNamesCallback);
if (!fms.getProfileNames()) {
callback({status: 2, msg: "Whoops! We're busy!" });
}
function FetchProfileNamesCallback(response) {
if (response.profiles) {
var profiles = response.profiles;
var count = 0;
for (var i = 1; i < menuPopup.childNodes.length; ++i) {
if (profiles[String(i)]) {
var name = profiles[String(i)];
menuPopup.childNodes[i].label = name;
menuPopup.childNodes[i].hidden = false;
count++;
} else {
menuPopup.childNodes[i].hidden = true;
}
}
if (callback) {
callback({ status: response.status, count: count,
profiles: profiles });
}
}
}
};
xm.VerifyPINStatus = function(pin, text, spinner, callback) {
var fms = Cc["@foxcloud.com/extensions/foxmarks;1"].
getService(Ci.nsIFoxmarksService);
XmarksServiceObserver.start(text, spinner, callback);
fms.verifypin(pin);
};
xm.FetchAccountStatus = function(syncType, text, spinner, callback) {
var fms = Cc["@foxcloud.com/extensions/foxmarks;1"].
getService(Ci.nsIFoxmarksService);
XmarksServiceObserver.start(text, spinner, callback);
try {
fms.status(syncType);
} catch (e) {
Xmarks.LogWrite("FetchAccountStatus failed: " + e.toSource());
callback(typeof(e) == "number" ? e : 4);
}
};
xm.FetchRevision = function(rev,callback) {
var fms = Cc["@foxcloud.com/extensions/foxmarks;1"].
getService(Ci.nsIFoxmarksService);
XmarksServiceObserver.start("", null, callback);
fms.getrevision(rev);
};
xm.FetchRevisions = function(callback) {
var fms = Cc["@foxcloud.com/extensions/foxmarks;1"].
getService(Ci.nsIFoxmarksService);
XmarksServiceObserver.start("", null, callback);
fms.getrevisions();
};
xm.FetchAccountExtStatus = function(syncType, text, spinner, callback) {
var fms = Cc["@foxcloud.com/extensions/foxmarks;1"].
getService(Ci.nsIFoxmarksService);
XmarksServiceObserver.start(text, spinner, callback);
fms.extstatus(syncType);
};
var inputTimer;
xm.handlePasswordMeter = function(id){
if(inputTimer){
window.clearTimeout(inputTimer);
inputTimer = undefined;
}
inputTimer = window.setTimeout(function(){
var txt = document.getElementById(id).value;
var result = TestPassword(txt);
if(result * 5 > 200 || result > 24){
result = 40;
}
document.getElementById('passwordmeter').width = result * 5;
if(txt.length < 4){
document.getElementById('passwordStrength').style.color =
"#333";
document.getElementById('passwordmeter').style.backgroundColor =
"#999";
document.getElementById('passwordStrength').value =
xm.Bundle().GetStringFromName("password.tooshort");
}
else if(result < 17){
document.getElementById('passwordStrength').value =
xm.Bundle().GetStringFromName("password.weak");
document.getElementById('passwordStrength').style.color =
"#57040F";
document.getElementById('passwordmeter').style.backgroundColor =
"#57040F";
}
else if(result < 24){
document.getElementById('passwordStrength').value =
xm.Bundle().GetStringFromName("password.good");
document.getElementById('passwordStrength').style.color =
"#ED9D2B";
document.getElementById('passwordmeter').style.backgroundColor =
"#ED9D2B";
}
else {
document.getElementById('passwordStrength').value =
xm.Bundle().GetStringFromName("password.strong");
document.getElementById('passwordStrength').style.color =
"#2A911B";
document.getElementById('passwordmeter').style.backgroundColor =
"#2A911B";
}
inputTimer = undefined;
}, 500);
};
})();